前言时不可以苟遇,道不可以虚行。STL中最常用的容器为:vector,暂且把它理解为我们之前学过的数组Array。一、创建一个vector容器(数组)添加头文件:#include vectorint>v;二、向容器中插入数据利用内置函数:push_back() v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);三、通过迭代器访问容器中的数据1、利用起始和结束两个迭代器先声明两个迭代器,一个指向容器中的第一元素,一个指向容器中的最后一个元素的下一个位置然后利用一层while循环,依次遍历容器中的元素。 vectorin
文章目录前言一、priority_queue的底层实现二、使用仿函数控制priority_queue的底层总结前言本文章讲解C++STL的容器适配器:priority_queue的实现,并实现仿函数控制priority_queue底层。一、priority_queue的底层实现priority_queue叫做优先级队列,它的底层结构是堆,在库中,默认生成的是大堆在库的实现中,使用vector作为该优先级队列的适配容器。由于priority_queue也是一个适配器,所以它的接口函数也可以对其他容器的函数进行封装使用。下面来对priority_queue进行模拟实现。#pragmaonce//优
个人主页:🍝在肯德基吃麻辣烫分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处。文章目录前言一、什么是容器适配器?二、stack的基本函数和模拟实现三、queue的基本函数和模拟实现四、deque4.1deque的底层结构4.2使用deque适配stack和queue的原因总结前言本文章主要介绍容器适配器的功能,以及一个适配的场景。一、什么是容器适配器?容器适配器,按字面意思理解的话,就是用来对一个容器进行匹配的。在C++STL中,容器有:vector,list,deque,map,set等。而在C++STL中不把stack和queue纳入容器的范围而是纳入容器适配器的范围是因为:stack
目录前沿一、vector的使用 1、vector构造函数的声明 2、vector迭代器的使用 3、vector空间增长问题 4、vector的增删查改二、vector的模拟实现 1、vector的成员变量 2、迭代器 3、容量相关(resize,reserve) 4、数据访问相关 5、插入删除 5.1任意位置插入 5.2任意位置删除 5.3尾插 5.4尾删 6、析构函数 7、交换函数 8、构造函数 8.1无参构造 8.2实参构造 8.3迭代器区间构造 8.4实参构造的特例化 8.5拷贝构造 9、赋值运算符重载三、vector迭代器失效问题(重点) 1、会引起其底层空间改变的操作,都有可能是迭代
模板和STL简介1.泛型编程2.函数模板2.1函数模板概念2.1函数模板格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则3.类模板3.1类模板的定义格式3.2类模板的实例化4.什么是STL5.STL的版本6.STL的六大组件7.STL的重要性8.如何更好地学习STL9.STL的缺陷结语1.泛型编程泛型编程是一种编程范式,旨在实现可重用、通用和高度抽象的代码。它允许程序员编写与数据类型无关的代码,以便在不同的数据类型上进行操作,而无需为每种数据类型重复编写代码。在传统的编程中,通常需要为每种数据类型编写特定的代码。例如,如果要实现一个排序算法,可能需要为整数、浮点数和字符串
目录1.读源码2.框架搭建 3.list的迭代器4.list的拷贝构造与赋值重载拷贝构造赋值重载5.list的常见重要接口实现operator--() insert接口erase接口push_back接口push_front 接口pop_back接口pop_front接口size接口clear接口别忘了析构函数源码分享写在最后:1.读源码读源码千万不能一行一行读啊,不然你就看晕在那里了,我们先从核心框架开始抓取,比如说先找到list在哪: 然后老规矩,我们先找他的成员变量:那我们就来找找这个link_type是什么:link_type是list_node*,list_node是一个类类型,那我
放在专栏【C++知识总结】,会持续更新,期待支持1、list数据结构list是一个带有头节点的双向链表,list主要是由以下部分组成:list节点类、迭代器类、list本身1.1、list节点类关于list节点类,由于list本身是一个双向的链表,所以节点内必须包含指向前一个节点的指针、指向后一个节点的指针、用来存储数据的data。同时我们只需给该类一个构造即可,因为对于节点的析构,我们交给list本身这个类来实现即可。如下所示,为list的节点设计:1.2、迭代器类list不能像vector那样以一个原生指针作为迭代器,这是因为list中各个节点并不是连续的,但是list中的迭代器必须要能
个人主页:平行线也会相交💪欢迎点赞👍收藏✨留言✉加关注💓本文由平行线也会相交原创收录于专栏【C++之路】💌本专栏旨在记录C++的学习路线,望对大家有所帮助🙇希望我们一起努力、成长,共同进步。🍓list是STL中的一种容器,底层其实就是一个双向链表。既然底层实现是双向链表,所以list重要的一点就是插入和删除操作的时间复杂度为常数时间O(1),这是因为链表的结构不需要像数组一样进行内存重排。当然,如果要频繁访问链表中的元素,需要沿着链表进行遍历,这导致list容器访问操作的时间复杂度为O(n)。下面将对list中的常见的用法进行一一介绍。目录一、创建变量二、增删查改1️⃣插入元素2️⃣删除3️
目录一,准备工作二,push_back 1,关于引用2.参数const的修饰 补充三,迭代器实现四,Pop_back五,insert1.补充——迭代器失效六,erase七,构造函数 1.迭代器构造 2.其他构造3.拷贝构造 1)传统写法2)现代写法(提高函数复用性) 八,赋值符号重载九,resize 一,准备工作 准备工作中,需要前面所学的,命名空间, 类模板知识,以及我们实现之前需要借鉴一下STL源代码如何实现。开始实现前,我们先熟悉一下vector 的框架://头文件#include#includeusingnamespacestd;namespacemy_vector//里面我们使
"list"容器从使用到模拟实现一、list介绍二、list的使用list的构造迭代器empty和sizefront和backlistmodifierslist迭代器失效问题三、list的模拟实现list的结构模型成员变量初始化函数构造函数拷贝构造clear()析构函数迭代器swap()重载=赋值运算符insert()erase()size()头插/删、尾插/删总结🍀小结🍀🎉博客主页:小智_x0___0x_🎉欢迎关注:👍点赞🙌收藏✍️留言🎉系列专栏:C++初阶🎉代码仓库:小智的代码仓库一、list介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。l